Spring Cloud Eureka (Service Discovery)

Java Technologies - স্প্রিং ক্লাউড (Spring Cloud)
205

Spring Cloud Eureka হল একটি সার্ভিস ডিসকভারি সিস্টেম যা Netflix দ্বারা তৈরি এবং Spring Cloud এর একটি গুরুত্বপূর্ণ অংশ। এটি মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয় যেখানে সার্ভিসগুলো একটি ইউনিক নেটওয়ার্ক ঠিকানা বা IP অ্যাড্রেস ব্যবহার করে একে অপরের সাথে যোগাযোগ করতে পারে। Eureka সার্ভিস ডিসকভারি সার্ভার হিসেবে কাজ করে, যা সার্ভিসগুলিকে রেজিস্টার এবং ডিসকভার করতে সহায়তা করে।

মাইক্রোসার্ভিস আর্কিটেকচারে, সার্ভিসগুলোর মধ্যে যোগাযোগের জন্য একটি সার্ভিস ডিসকভারি সিস্টেম অপরিহার্য, যেখানে সার্ভিসগুলো একে অপরের অবস্থান বা অবস্থান পরিবর্তন জানাতে পারে। Eureka এই কাজটি সহজভাবে করে, এবং এটি স্বয়ংক্রিয়ভাবে সার্ভিসের অবস্থান ট্র্যাক করে।


Spring Cloud Eureka এর কাজ

Eureka সার্ভিস ডিসকভারি এবং রেজিস্ট্রেশন সিস্টেমে দুটি প্রধান অংশ রয়েছে:

  1. Eureka Server (Server-side)
  2. Eureka Client (Client-side)

1. Eureka Server

Eureka Server হল একটি সার্ভিস যা মাইক্রোসার্ভিসের রেজিস্ট্রেশন, ডিসকভারি এবং মনিটরিংয়ের কাজ পরিচালনা করে। সার্ভিসগুলো যখন Eureka Server-এ রেজিস্টার করে, তখন সেগুলো অন্যান্য সার্ভিসের জন্য পাওয়া যায়।

2. Eureka Client

Eureka Client হলো সেই সার্ভিস যা Eureka Server-এ রেজিস্টার করে এবং তার অবস্থান Eureka Server-এর কাছে পাঠায়। Eureka Client সার্ভিসের অবস্থান পরিবর্তন হলে তা Eureka Server-এ স্বয়ংক্রিয়ভাবে আপডেট হয় এবং অন্য সার্ভিসগুলো সেই পরিবর্তিত অবস্থান জানতে পারে।


Spring Cloud Eureka এর ব্যবহারের প্রধান সুবিধা

  1. সার্ভিস ডিসকভারি:
    Eureka সার্ভিস ডিসকভারি সিস্টেম সরবরাহ করে, যার মাধ্যমে সার্ভিসগুলো স্বয়ংক্রিয়ভাবে একে অপরকে খুঁজে বের করতে পারে এবং সহজে যোগাযোগ করতে পারে।
  2. লোড ব্যালান্সিং:
    Eureka Client সার্ভিসের অবস্থান পরিবর্তন হলে Eureka Server তা আপডেট করে এবং সার্ভিসের মধ্যে লোড ব্যালান্সিং প্রক্রিয়া সহজ হয়।
  3. ডায়নামিক সার্ভিস রেজিস্ট্রেশন:
    Eureka ক্লায়েন্ট নতুন সার্ভিস যোগ করলে Eureka Server স্বয়ংক্রিয়ভাবে সেটি রেজিস্টার করে এবং সেই সার্ভিস সহজেই উপলব্ধ হয়।
  4. নিরাপত্তা এবং ফেইলওভার:
    সার্ভিস ব্যর্থ হলে Eureka ফেইলওভার মেকানিজম প্রয়োগ করে এবং সার্ভিসের ব্যর্থতা মোকাবিলা করে।
  5. স্কেলেবিলিটি:
    Eureka সার্ভিসের সাথে মাইক্রোসার্ভিসগুলো যুক্ত হলে সিস্টেমটি আরও স্কেলেবল হয়ে ওঠে। নতুন সার্ভিস যুক্ত করা এবং পরবর্তী সময়ে যোগাযোগের উন্নতি সহজ হয়।

Spring Cloud Eureka সার্ভিস কনফিগারেশন

Eureka Server Setup

প্রথমে একটি Eureka Server অ্যাপ্লিকেশন তৈরি করতে হবে যা সার্ভিস রেজিস্ট্রেশন এবং ডিসকভারি পরিচালনা করবে।

1. Eureka Server Configuration (Spring Boot App)

@SpringBootApplication
@EnableEurekaServer // Eureka server enable করার জন্য অ্যানোটেশন
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

application.properties (Eureka Server)

spring.application.name=eureka-server
server.port=8761
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false

এখানে, eureka.client.register-with-eureka=false এবং eureka.client.fetch-registry=false ব্যবহার করা হয়েছে কারণ এটি শুধুমাত্র সার্ভার, ক্লায়েন্ট নয়।


Eureka Client Setup

এখন, Eureka Client-এ সার্ভিস রেজিস্ট্রেশন কনফিগারেশন করতে হবে যাতে এটি Eureka Server-এ রেজিস্টার করতে পারে।

1. Eureka Client Configuration (Spring Boot App)

@SpringBootApplication
@EnableEurekaClient // Eureka client enable করার জন্য অ্যানোটেশন
public class EurekaClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}

application.properties (Eureka Client)

spring.application.name=eureka-client
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/

এখানে eureka.client.serviceUrl.defaultZone ব্যবহার করে Eureka Server এর URL নির্ধারণ করা হয়েছে।


Spring Cloud Eureka কনফিগারেশন সঠিকভাবে কাজ করছে কিনা তা যাচাই করা

  • Eureka Server UI: Eureka Server চালু হলে আপনি http://localhost:8761 এ সার্ভিস রেজিস্ট্রেশন এবং ডিসকভারি দেখতে পাবেন। এখানে আপনার Eureka Client সার্ভিস এবং অন্যান্য সার্ভিস রেজিস্টার হবে।
  • Client Services List: Eureka Server UI এর Applications পৃষ্ঠায় আপনি আপনার সব রেজিস্টার্ড সার্ভিস দেখতে পাবেন।

Spring Cloud Eureka এর উন্নত ফিচার

  1. Eureka Health Check: Eureka সার্ভিসের স্বাস্থ্য (health) পরীক্ষা করতে সক্ষম, যাতে সার্ভিসের অবস্থা স্বয়ংক্রিয়ভাবে পর্যবেক্ষণ করা যায় এবং সঠিক সময়ে রিফ্রেশ করা যায়।
  2. Self-Healing: Eureka সার্ভিস ক্লায়েন্টগুলি স্বয়ংক্রিয়ভাবে সার্ভার থেকে নিজেদেরকে ডিকনফিগার বা রেজিস্টার করতে পারে, যদি সার্ভিস বন্ধ হয়ে যায় বা ব্যর্থ হয়।
  3. Load Balancing Integration: Eureka সার্ভিস রেজিস্ট্রেশন এবং ডিসকভারি করার মাধ্যমে Spring Cloud Ribbon বা Spring Cloud Load Balancer ব্যবহার করে লোড ব্যালান্সিং সিস্টেম সমর্থন করে।

Spring Cloud Eureka-এ আরও কিছু কনফিগারেশন অপশন

  • Registry Fetch Interval:
    সার্ভিস রেজিস্ট্রেশনের সময় প্রতিটি সার্ভিসের তালিকা আপডেট করার সময় নির্ধারণ করা যায়।

    eureka.client.registry-fetch-interval-seconds=30
    
  • Renewal Interval:
    সার্ভিসের লাইফটাইম নির্ধারণ করে, সার্ভিসটি Eureka-এ কত সময় পর্যন্ত রেজিস্টার থাকবে।

    eureka.client.renewal-interval-in-seconds=30
    
  • Heartbeat Interval:
    সার্ভিসকে Eureka Server এ স্বাস্থ্য পরীক্ষা জন্য কত সময় পর পর "heartbeat" পাঠাতে হবে তা নির্ধারণ করা।

    eureka.client.healthcheck-interval=30
    

উপসংহার

Spring Cloud Eureka মাইক্রোসার্ভিস আর্কিটেকচারে একটি গুরুত্বপূর্ণ উপাদান হিসেবে কাজ করে সার্ভিস ডিসকভারি এবং রেজিস্ট্রেশন সিস্টেম প্রদান করে। এটি সার্ভিসগুলির মধ্যে সহজ এবং স্বয়ংক্রিয় যোগাযোগ নিশ্চিত করে। Eureka সার্ভিসের মাধ্যমে, মাইক্রোসার্ভিসগুলো একে অপরকে খুঁজে বের করে এবং কার্যকরীভাবে যোগাযোগ করতে পারে। এটি মাইক্রোসার্ভিস আর্কিটেকচার এবং ডিস্ট্রিবিউটেড সিস্টেমের জন্য একটি অপরিহার্য টুল।

Content added By

Eureka কি এবং কেন এটি প্রয়োজন?

187

Eureka হলো Netflix দ্বারা তৈরি একটি ওপেন সোর্স সার্ভিস ডিসকভারি সিস্টেম, যা Spring Cloud-এর একটি গুরুত্বপূর্ণ অংশ। এটি মাইক্রোসার্ভিস আর্কিটেকচারের জন্য সার্ভিস রেজিস্ট্রি এবং সার্ভিস ডিসকভারি ব্যবস্থা সরবরাহ করে। Eureka সার্ভিসগুলোর অবস্থান ও তাদের স্ট্যাটাস ট্র্যাক করে এবং সার্ভিসগুলো একে অপরকে সহজে খুঁজে পেতে পারে।

Eureka এর মূল উপাদান

  1. Eureka Server:
    • Eureka Server হলো সার্ভিস রেজিস্ট্রি সার্ভার, যেখানে সমস্ত সার্ভিস নিজেকে রেজিস্টার করে এবং তাদের অবস্থান এবং স্ট্যাটাস সেন্ট্রালাইজডভাবে স্টোর করা হয়।
    • সার্ভিসগুলো যখন আসবে বা চলে যাবে, Eureka Server সেই পরিবর্তন ট্র্যাক করে এবং এই তথ্য অন্যান্য সার্ভিসকে সরবরাহ করে।
  2. Eureka Client:
    • Eureka Client হলো সেই সার্ভিস যা Eureka Server-এ নিজেকে রেজিস্টার করে। এটি সার্ভিস ডিসকভারি করতে ব্যবহৃত হয়।
    • Eureka Client সার্ভিস রেজিস্ট্রেশন এবং সার্ভিসের অবস্থান খুঁজে বের করার কাজ করে। এটি সার্ভিসের অবস্থান জানে এবং সার্ভিসগুলোর মধ্যে যোগাযোগ স্থাপন করতে পারে।

Eureka কেন প্রয়োজন?

Eureka ব্যবহারের মাধ্যমে মাইক্রোসার্ভিস আর্কিটেকচারে অনেক সুবিধা পাওয়া যায়। নিচে Eureka ব্যবহারের কিছু গুরুত্বপূর্ণ কারণ দেওয়া হলো:

1. ডাইনামিক সার্ভিস ডিসকভারি (Dynamic Service Discovery)

  • মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিসগুলো ডাইনামিকভাবে আসে এবং চলে যায়। Eureka সার্ভিসের অবস্থান আপডেট করে রাখে এবং সার্ভিসগুলোকে রেজিস্টার এবং ডিসকভার করতে সহায়তা করে।
  • এটি সার্ভিসের অবস্থান (আইপি ঠিকানা বা পোর্ট) সেন্ট্রালাইজড ভাবে ট্র্যাক করে, যাতে অন্যান্য সার্ভিসগুলো সহজেই তাদের যোগাযোগ স্থাপন করতে পারে।

2. লোড ব্যালেন্সিং (Load Balancing)

  • Eureka সার্ভিসের অবস্থান জানা থাকলে, সার্ভিসগুলোকে একাধিক ইন্সট্যান্সের মধ্যে লোড ব্যালেন্সিং করতে সুবিধা হয়।
  • Eureka সার্ভিসগুলো ক্লায়েন্টদের জন্য সার্ভিসের ইনস্ট্যান্সের একটি তালিকা প্রদান করে, যা লোড ব্যালেন্সিং এবং ফেইলওভার সক্ষম করে।

3. ফল্ট টলারেন্স (Fault Tolerance)

  • Eureka ফেইলিং সার্ভিসগুলোর তথ্য দ্রুত আপডেট করে, যাতে ডাউন সার্ভিসগুলোর জন্য কোনো রিকোয়েস্ট পাঠানো না হয়।
  • যদি কোনো সার্ভিস ডাউন হয়, Eureka সার্ভিসের অবস্থা সঠিকভাবে ট্র্যাক করে এবং অন্যান্য সার্ভিসগুলোতে রিকোয়েস্ট পাঠানোর ব্যবস্থা নিশ্চিত করে।

4. ডিস্ট্রিবিউটেড সিস্টেমের সেন্ট্রালাইজড সার্ভিস রেজিস্ট্রি

  • Eureka সার্ভিসের অবস্থান সেন্ট্রালাইজড সার্ভিস রেজিস্ট্রি হিসেবে কাজ করে, যেখানে সমস্ত সার্ভিসের অবস্থান, পোর্ট, এবং অন্যান্য গুরুত্বপূর্ণ তথ্য সংরক্ষিত থাকে।
  • এটি মাইক্রোসার্ভিসের মধ্যে ইন্টার-কমিউনিকেশন সহজ করে, কারণ সার্ভিসগুলো একে অপরকে সহজেই খুঁজে পেতে পারে।

5. স্বয়ংক্রিয় সার্ভিস রেজিস্ট্রেশন এবং ডি-রেজিস্ট্রেশন

  • Eureka সার্ভিসগুলোর জন্য স্বয়ংক্রিয় রেজিস্ট্রেশন এবং ডি-রেজিস্ট্রেশন সমর্থন করে। যখন কোনো সার্ভিস শুরু হয়, এটি Eureka Server-এ নিজেকে রেজিস্টার করে এবং যখন এটি বন্ধ হয়, তখন Eureka Server নিজে থেকেই সেটি ডি-রেজিস্টার করে।
  • এটি সার্ভিসের সঠিক অবস্থা ট্র্যাক করতে সাহায্য করে।

Eureka Server এবং Client কনফিগারেশন উদাহরণ

1. Eureka Server কনফিগারেশন

Eureka Server তৈরি করতে প্রথমে spring-cloud-starter-netflix-eureka-server ডিপেনডেন্সি যোগ করতে হবে।

pom.xml:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>

Eureka Server কনফিগারেশন ক্লাস:

@EnableEurekaServer
@SpringBootApplication
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

@EnableEurekaServer অ্যানোটেশনটি Eureka Server চালু করে।

application.properties (Eureka Server কনফিগারেশন):

server.port=8761
eureka.client.registerWithEureka=false
eureka.client.fetchRegistry=false

2. Eureka Client কনফিগারেশন

Eureka Client তৈরি করতে spring-cloud-starter-netflix-eureka-client ডিপেনডেন্সি যোগ করতে হবে।

pom.xml:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

Eureka Client কনফিগারেশন ক্লাস:

@SpringBootApplication
@EnableEurekaClient
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

application.properties (Eureka Client কনফিগারেশন):

spring.application.name=your-app-name
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

এখানে defaultZone Eureka Server এর URL পয়েন্ট করে, যেখানে সার্ভিসগুলি রেজিস্টার হবে।


Eureka ব্যবহারের উদাহরণ

ধরা যাক, একটি Order Service এবং একটি Payment Service রয়েছে। যদি Order Service একটি Payment Service কল করতে চায়, তবে Eureka Client-এর মাধ্যমে Payment Service এর অবস্থান জানার পর রিকোয়েস্ট পাঠানো সম্ভব হবে।

  1. Order Service-এর মধ্যে Eureka Client কনফিগার করা হবে, যা Payment Service-এর অবস্থান জানবে।
  2. Payment Service Eureka Server-এ রেজিস্টার করবে এবং তার অবস্থান Eureka Server থেকে অনুসন্ধানযোগ্য হবে।

Eureka ব্যবহার করার উপকারিতা

  1. ডাইনামিক সার্ভিস ডিসকভারি: সার্ভিসগুলোর অবস্থান পরিবর্তন হলে, Eureka তা ট্র্যাক করে এবং সার্ভিসগুলোর মধ্যে সহজে যোগাযোগ স্থাপন করতে সাহায্য করে।
  2. লোড ব্যালেন্সিং: সার্ভিসের একাধিক ইনস্ট্যান্স থাকার ফলে লোড ব্যালেন্সিং সহজ হয়ে যায়।
  3. ফল্ট টলারেন্স: সার্ভিসের অবস্থা স্বয়ংক্রিয়ভাবে আপডেট হওয়ার মাধ্যমে মাইক্রোসার্ভিস আর্কিটেকচারের ফল্ট টলারেন্স বাড়ানো যায়।
  4. সহজ কনফিগারেশন: Eureka মাইক্রোসার্ভিসের মধ্যে ইন্টিগ্রেশন এবং কনফিগারেশন সহজ করে, যা ডেভেলপমেন্টের সময় অনেক সুবিধা দেয়।

উপসংহার

Eureka হলো একটি শক্তিশালী সার্ভিস ডিসকভারি সিস্টেম যা Spring Cloud-এ মাইক্রোসার্ভিসের মধ্যে যোগাযোগ ও সার্ভিস রেজিস্ট্রেশন সহজ করে। এটি ডাইনামিক সার্ভিস ডিসকভারি, লোড ব্যালেন্সিং, এবং ফল্ট টলারেন্স নিশ্চিত করে, যা মাইক্রোসার্ভিস আর্কিটেকচারের জন্য অপরিহার্য। Spring Cloud Eureka মাইক্রোসার্ভিসের মধ্যে সার্ভিসের যোগাযোগ, স্থিতিশীলতা এবং স্কেলেবিলিটি নিশ্চিত করতে গুরুত্বপূর্ণ ভূমিকা পালন করে।

Content added By

Eureka Server এবং Eureka Client সেটআপ করা

197

Eureka হল Netflix-এর একটি সার্ভিস ডিসকভারি প্ল্যাটফর্ম যা Spring Cloud এর সাথে ইন্টিগ্রেট করা যায়। এটি মাইক্রোসার্ভিসের মধ্যে একে অপরকে খুঁজে বের করার জন্য ব্যবহৃত হয়, যাতে সার্ভিসগুলো নিজস্ব অবস্থান (ইউআরএল) রেজিস্ট্রেশন করে এবং অন্য সার্ভিসগুলো তাদের খুঁজে পেতে পারে।

এখন আমরা দেখব Eureka Server এবং Eureka Client কিভাবে সেটআপ করতে হয়।


১. Eureka Server সেটআপ

Step 1: Maven ডিপেনডেন্সি যোগ করা

প্রথমে আপনার pom.xml ফাইলে Eureka Server এর জন্য ডিপেনডেন্সি যোগ করতে হবে।

<dependencies>
    <!-- Spring Boot Starter Web Dependency -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Eureka Server Dependency -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
    </dependency>

    <!-- Spring Boot Starter Actuator for Monitoring -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
</dependencies>

Step 2: @EnableEurekaServer এনোটেশন যুক্ত করা

Eureka Server চালানোর জন্য আপনার Spring Boot অ্যাপ্লিকেশনে @EnableEurekaServer এনোটেশন যোগ করতে হবে।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer  // Enable Eureka Server
public class EurekaServerApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

Step 3: application.properties কনফিগারেশন

Eureka Server এর কনফিগারেশন application.properties বা application.yml ফাইলে করতে হবে।

# Eureka Server Configuration
spring.application.name=eureka-server
server.port=8761  # Port where Eureka Server will run

# Eureka Server Settings
eureka.client.register-with-eureka=false  # Disable registration for Eureka Server itself
eureka.client.fetch-registry=false  # Disable fetching the registry for Eureka Server
eureka.server.enable-self-preservation=false  # Disable self-preservation mode for the server

এখন আপনার Eureka Server তৈরি হয়েছে এবং এটি localhost:8761-এ চলবে।


২. Eureka Client সেটআপ

Step 1: Maven ডিপেনডেন্সি যোগ করা

Eureka Client-এ নিম্নলিখিত ডিপেনডেন্সি যোগ করুন।

<dependencies>
    <!-- Spring Boot Starter Web Dependency -->
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!-- Eureka Client Dependency -->
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
</dependencies>

Step 2: @EnableEurekaClient এনোটেশন যুক্ত করা

Eureka Client এর জন্য আপনার Spring Boot অ্যাপ্লিকেশনে @EnableEurekaClient এনোটেশন যোগ করতে হবে (এটা Spring Boot 2.x এ প্রয়োজনীয় নয় কারণ Spring Cloud স্বয়ংক্রিয়ভাবে Eureka Client কে সনাক্ত করে, তবে আপনি এখানে যুক্ত করতে পারেন)।

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;

@SpringBootApplication
@EnableEurekaClient  // Enable Eureka Client
public class EurekaClientApplication {

    public static void main(String[] args) {
        SpringApplication.run(EurekaClientApplication.class, args);
    }
}

Step 3: application.properties কনফিগারেশন

Eureka Client এর কনফিগারেশন application.properties বা application.yml ফাইলে করতে হবে।

# Eureka Client Configuration
spring.application.name=eureka-client  # Service name
server.port=8080  # Port where client will run

# Eureka Server URL
eureka.client.service-url.defaultZone=http://localhost:8761/eureka/  # Eureka Server URL

# Other client configuration
eureka.instance.hostname=localhost  # Instance hostname

এটি eureka.client.service-url.defaultZone দ্বারা Eureka Server এর URL নির্ধারণ করে।

Step 4: Eureka Server এর সাথে Client রেজিস্টার করা

Eureka Client তার নিজস্ব অ্যাপ্লিকেশন স্টার্ট করলে, এটি Eureka Server এর সাথে সংযুক্ত হবে এবং রেজিস্টার করবে। Eureka Server যেকোনো সার্ভিস থেকে সংযুক্ত অ্যাপ্লিকেশনগুলিকে ট্র্যাক করতে পারবে।


৩. Eureka Server এবং Client-কে সংযুক্ত করা

  1. Eureka Server শুরু করুন: প্রথমে আপনার Eureka Server অ্যাপ্লিকেশনটি রান করুন।
  2. Eureka Client শুরু করুন: এরপর আপনার Eureka Client অ্যাপ্লিকেশনটি রান করুন।
  3. Eureka Server Dashboard: একবার সব সঠিকভাবে রান হলে, আপনি localhost:8761 এ Eureka Server এর ড্যাশবোর্ডে গিয়ে ক্লায়েন্ট অ্যাপ্লিকেশন রেজিস্ট্রেশন দেখতে পারবেন।

৪. Eureka Server এবং Client এর মধ্যে কার্যকারিতা

  • Service Registration and Discovery: Eureka Server স্বয়ংক্রিয়ভাবে সমস্ত রেজিস্টার করা সার্ভিসের তথ্য সংগ্রহ করে এবং ক্লায়েন্টরা এই সার্ভিসগুলোকে খুঁজে পায়।
  • Dynamic Scaling: সার্ভিস নতুন ইনস্ট্যান্স যোগ করলে Eureka Client সেই সার্ভিসকে Eureka Server-এ রেজিস্টার করে।
  • Self-Healing: যদি একটি সার্ভিস ব্যর্থ হয়, Eureka স্বয়ংক্রিয়ভাবে সেই সার্ভিসকে বাতিল করে দেয় এবং অন্য সার্ভিস থেকে ডেটা পাঠানো হয়।

উপসংহার

  • Eureka Server একটি সার্ভিস ডিসকভারি প্ল্যাটফর্ম যা সমস্ত মাইক্রোসার্ভিসের অবস্থান ট্র্যাক করে।
  • Eureka Client নিজেকে Eureka Server-এ রেজিস্টার করে এবং একে অপরের অবস্থান খুঁজে পায়।
  • Spring Cloud Eureka ব্যবহার করে মাইক্রোসার্ভিসের মধ্যে সহজেই যোগাযোগ এবং ডিসকভারি পরিচালনা করা যায়।

এইভাবে, Eureka Server এবং Eureka Client সেটআপ করে মাইক্রোসার্ভিসের মধ্যে সার্ভিস ডিসকভারি সম্পন্ন করা যায়।

Content added By

Service Registration এবং Discovery এর কাজের প্রক্রিয়া

226

Service Registration এবং Service Discovery হল Spring Cloud-এর অত্যন্ত গুরুত্বপূর্ণ দুটি বৈশিষ্ট্য, বিশেষ করে যখন আপনি মাইক্রোসার্ভিস আর্কিটেকচার তৈরি করছেন। মাইক্রোসার্ভিস আর্কিটেকচারে, বিভিন্ন সার্ভিসের মধ্যে যোগাযোগ ও সহযোগিতা করার জন্য সার্ভিসগুলোকে একে অপরকে খুঁজে বের করার সক্ষমতা থাকতে হবে। Service Registration এবং Service Discovery এই কাজটি পরিচালনা করে।

১. Service Registration

Service Registration হল প্রক্রিয়া যেখানে প্রতিটি মাইক্রোসার্ভিসের উপস্থিতি একটি Service Registry-তে নিবন্ধিত হয়। এই নিবন্ধন প্রক্রিয়াটি সার্ভিসগুলোর জন্য সেন্ট্রাল রেজিস্ট্রেশন পয়েন্ট হিসেবে কাজ করে। সাধারণত, Eureka বা Consul ব্যবহার করা হয় Service Registry হিসেবে।

যখন একটি মাইক্রোসার্ভিস চালু হয়, তখন সেটি Service Registry-তে তার নিজস্ব মেটাডেটা (যেমন: সার্ভিসের নাম, অবস্থান, পোর্ট নম্বর, স্ট্যাটাস) নিবন্ধন করে। অন্য সার্ভিসগুলি এই রেজিস্ট্রিতে থাকা তথ্যের মাধ্যমে অন্য সার্ভিসগুলোর অবস্থান এবং তাদের সাথে যোগাযোগ করতে পারে।

২. Service Discovery

Service Discovery হল প্রক্রিয়া যেখানে একটি মাইক্রোসার্ভিস চালু হওয়ার পর তা Service Registry-তে নিবন্ধিত সার্ভিসগুলোকে ডাইনামিকভাবে খুঁজে বের করে। যখন একটি সার্ভিস অন্য কোনো সার্ভিসের সাথে যোগাযোগ করতে চায়, তখন সে সার্ভিসের অবস্থান বা অন্যান্য তথ্য জানার জন্য Service Registry-তে অনুসন্ধান করে। একে client-side discovery বা server-side discovery বলা হতে পারে, নির্ভর করে আপনার আর্কিটেকচারের উপরে।

Spring Cloud-এ, সার্ভিস ডিসকভারি সাধারণত Eureka সার্ভিস ডিসকভারি সার্ভিস ব্যবহৃত হয়, তবে Consul বা Zookeeperও ব্যবহার করা যেতে পারে।

Service Registration এবং Discovery-এর কাজের প্রক্রিয়া:

১. Eureka সার্ভিস রেজিস্ট্রেশন এবং ডিসকভারি

Spring Cloud Eureka মাইক্রোসার্ভিসগুলোর জন্য একটি সার্ভিস রেজিস্ট্রি ও ডিসকভারি প্ল্যাটফর্ম সরবরাহ করে। এটি ক্লাউড অ্যাপ্লিকেশনের জন্য সার্ভিস রেজিস্ট্রেশন এবং ডিসকভারি সমাধান প্রদান করে।

১.১ Service Registration (Eureka Client):

প্রথমে সার্ভিসকে Eureka Server-এ নিবন্ধিত করার জন্য Eureka Client কনফিগারেশন করতে হবে। এখানে আমরা দেখব কীভাবে একটি Spring Boot অ্যাপ্লিকেশনকে Eureka সার্ভারে রেজিস্টার করা হয়।

Eureka Server Setup:

  1. application.properties ফাইলে Eureka সার্ভারের কনফিগারেশন:
server.port=8761
spring.application.name=eureka-server
eureka.client.register-with-eureka=false
eureka.client.fetch-registry=false
  1. EurekaServerApplication.java ক্লাস:
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
}

Service Registration (Eureka Client)

  1. application.properties (Client Service):
spring.application.name=my-service
eureka.client.serviceUrl.defaultZone=http://localhost:8761/eureka/
  1. @EnableDiscoveryClient এনোটেশনটি ক্লায়েন্ট সার্ভিসে যোগ করতে হবে:
@SpringBootApplication
@EnableDiscoveryClient
public class MyServiceApplication {
    public static void main(String[] args) {
        SpringApplication.run(MyServiceApplication.class, args);
    }
}

এখন, যখন MyServiceApplication চালু হবে, এটি Eureka সার্ভারে নিবন্ধিত হবে।

১.২ Service Discovery (Eureka Client):

একটি মাইক্রোসার্ভিস যখন অন্য কোনো সার্ভিসের সাথে যোগাযোগ করতে চায়, তখন সে Eureka Server থেকে সার্ভিসের অবস্থান খুঁজে বের করবে। এই প্রক্রিয়াটি Service Discovery বলে।

যেমন, ধরুন একটি সার্ভিস "MyService" অন্য একটি সার্ভিস "AnotherService" এর সাথে যোগাযোগ করতে চায়। তাহলে MyService তার application.properties ফাইলে নিম্নরূপ কনফিগারেশন করবে:

myServiceUrl=http://another-service:8080

এটি Eureka সার্ভার থেকে "another-service" সার্ভিসের অবস্থান খুঁজে পাবে এবং সেই সার্ভিসে রিকোয়েস্ট পাঠাবে।

২. Eureka সার্ভার এবং ক্লায়েন্টের মধ্যে কাজের প্রক্রিয়া:

  1. Eureka সার্ভার চালু হলে, এটি একটি রেজিস্ট্রি হিসেবে কাজ করে। সার্ভিসগুলোর অবস্থান এবং স্ট্যাটাস তথ্য সংগ্রহ করে রাখে।
  2. যখন একটি Eureka ক্লায়েন্ট সার্ভিস চালু হয়, এটি নিজের মেটাডেটা (যেমন সার্ভিসের নাম, পোর্ট নম্বর, অবস্থা) Eureka সার্ভারে নিবন্ধন করে।
  3. Eureka সার্ভার রেজিস্ট্রিতে সার্ভিসগুলোর তথ্য রাখে এবং সার্ভিসগুলো যখন অন্য সার্ভিসের সাথে যোগাযোগ করতে চায়, তখন তারা Eureka সার্ভার-এর মাধ্যমে সেই সার্ভিসের অবস্থান খুঁজে পায়।
  4. ক্লায়েন্ট সার্ভিসগুলি Eureka সার্ভারে নিবন্ধিত সার্ভিসগুলোকে ডাইনামিকভাবে খুঁজে বের করে এবং তাদের সাথে যোগাযোগ করে।

৩. Client-Side Discovery vs Server-Side Discovery:

  1. Client-Side Discovery:
    • Spring Cloud Eureka সাধারণত client-side discovery ব্যবহৃত হয়।
    • এখানে ক্লায়েন্ট সার্ভিসটি Eureka সার্ভার থেকে সার্ভিসের অবস্থান খুঁজে বের করে এবং সরাসরি সার্ভিসে রিকোয়েস্ট পাঠায়।
    • এটি সাধারণত Ribbon এর সাথে ব্যবহৃত হয়, যেখানে লোড ব্যালান্সিং ক্লায়েন্ট সাইডে পরিচালিত হয়।
  2. Server-Side Discovery:
    • এতে সার্ভিস রেজিস্ট্রির সাথে যোগাযোগ সার্ভার সাইডে হয় এবং ক্লায়েন্ট সার্ভিসটি রাউটিং সার্ভিসের মাধ্যমে সার্ভিসে রিকোয়েস্ট পাঠায়।
    • এখানে Zuul বা Spring Cloud Gateway গেটওয়ে হিসেবে ব্যবহৃত হয় এবং সার্ভিস রাউটিং ও লোড ব্যালান্সিং সার্ভার সাইডে পরিচালিত হয়।

উপসংহার:

Service Registration এবং Service Discovery মাইক্রোসার্ভিস আর্কিটেকচারে যোগাযোগ সহজ করে তোলে। Eureka, Consul বা Zookeeper এর মতো টুলস ব্যবহার করে সার্ভিসগুলো একে অপরকে খুঁজে বের করতে পারে এবং এই সার্ভিসগুলো রেজিস্ট্রিতে নিজেদের অবস্থান জানান দেয়, যাতে অন্য সার্ভিসগুলো তাদের সাথে যোগাযোগ করতে পারে। Spring Cloud এর সাহায্যে এই প্রক্রিয়া সহজ ও দ্রুত হয়।

Content added By

উদাহরণ সহ Eureka Server এবং Client Integration

200

Spring Cloud Eureka একটি সার্ভিস রেজিস্ট্রি এবং সার্ভিস ডিসকভারি সিস্টেম যা মাইক্রোসার্ভিস আর্কিটেকচারে ব্যবহৃত হয়। এটি মাইক্রোসার্ভিসগুলোর মধ্যে যোগাযোগ সহজতর করে, যাতে এক সার্ভিস অন্য সার্ভিসটি খুঁজে পায় এবং তাদের সাথে যোগাযোগ করতে পারে। Eureka Server এবং Eureka Client এর মাধ্যমে এই সিস্টেম কাজ করে।

Eureka Server এবং Client এর ইন্টিগ্রেশন প্রক্রিয়া

Step 1: Eureka Server সেটআপ

Eureka Server হলো সার্ভিস রেজিস্ট্রি যা সকল সার্ভিসের অবস্থান সংরক্ষণ এবং পরিচালনা করে। ক্লায়েন্ট সার্ভিসগুলি Eureka Server-এ রেজিস্টার করে, এবং অন্যান্য সার্ভিসের সাথে যোগাযোগ করতে পারে।

Eureka Server Setup
  1. Maven Dependencies: pom.xml ফাইলে Eureka Server এর জন্য প্রয়োজনীয় ডিপেন্ডেন্সি যোগ করুন:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
  2. Application Class (Eureka Server)

    Spring Boot অ্যাপ্লিকেশন ক্লাসে @EnableEurekaServer অ্যানোটেশন ব্যবহার করে Eureka Server সক্রিয় করুন:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
    
    @SpringBootApplication
    @EnableEurekaServer
    public class EurekaServerApplication {
        public static void main(String[] args) {
            SpringApplication.run(EurekaServerApplication.class, args);
        }
    }
    
  3. application.properties কনফিগারেশন (Eureka Server)

    Eureka Server কনফিগার করতে application.properties বা application.yml ফাইল ব্যবহার করুন:

    spring.application.name=eureka-server
    server.port=8761
    eureka.client.register-with-eureka=false
    eureka.client.fetch-registry=false
    

    এখানে, register-with-eureka=false এবং fetch-registry=false ব্যবহার করা হয়েছে কারণ এটি সার্ভিস রেজিস্ট্রি হিসেবে কাজ করছে এবং নিজেকে রেজিস্টার করতে হবে না।

  4. Run Eureka Server:

    Spring Boot অ্যাপ্লিকেশন চালানোর মাধ্যমে Eureka Server শুরু হবে। এরপরে আপনি http://localhost:8761 এ Eureka Server UI দেখতে পারবেন, যেখানে সার্ভিসের তালিকা দেখতে পারবেন।


Step 2: Eureka Client সেটআপ

Eureka Client হলো সেই মাইক্রোসার্ভিস যা Eureka Server-এ রেজিস্টার হয় এবং সার্ভিস ডিসকভারি সিস্টেমের মাধ্যমে একে অপরের সাথে যোগাযোগ করতে পারে।

Eureka Client Setup
  1. Maven Dependencies: pom.xml ফাইলে Eureka Client এর জন্য প্রয়োজনীয় ডিপেন্ডেন্সি যোগ করুন:

    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>
    
  2. Application Class (Eureka Client)

    Spring Boot অ্যাপ্লিকেশন ক্লাসে @EnableEurekaClient অ্যানোটেশন ব্যবহার করে Eureka Client সক্রিয় করুন:

    import org.springframework.boot.SpringApplication;
    import org.springframework.boot.autoconfigure.SpringBootApplication;
    import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
    
    @SpringBootApplication
    @EnableEurekaClient
    public class MyServiceApplication {
        public static void main(String[] args) {
            SpringApplication.run(MyServiceApplication.class, args);
        }
    }
    
  3. application.properties কনফিগারেশন (Eureka Client)

    Eureka Client কনফিগার করতে application.properties ফাইলে নিম্নলিখিত কনফিগারেশন করুন:

    spring.application.name=my-service
    eureka.client.service-url.defaultZone=http://localhost:8761/eureka/
    

    এখানে, spring.application.name=my-service দ্বারা ক্লায়েন্টের অ্যাপ্লিকেশন নাম নির্ধারণ করা হয় এবং eureka.client.service-url.defaultZone Eureka Server এর URL দেয়া হয়েছে।

  4. Run Eureka Client:

    Spring Boot অ্যাপ্লিকেশন চালানোর মাধ্যমে Eureka Client শুরু হবে। Eureka Server UI-তে আপনি এই সার্ভিসের নাম (যেমন my-service) দেখতে পাবেন।


Step 3: Eureka Server এবং Client এর ইন্টিগ্রেশন পরীক্ষা করা

  1. Eureka Server চালু করুন: EurekaServerApplication ক্লাস চালু করুন।
  2. Eureka Client চালু করুন: MyServiceApplication ক্লাস চালু করুন।
  3. Eureka UI তে সার্ভিস দেখুন: http://localhost:8761 এ যান, এবং আপনি দেখতে পাবেন যে Eureka Client সার্ভিসটি সফলভাবে রেজিস্টার হয়েছে।

Step 4: Eureka Client থেকে সার্ভিস কল করা (Load Balancing)

Eureka Client সার্ভিস রেজিস্ট্রি থেকে উপলব্ধ সার্ভিসগুলি ডিসকভার করতে পারে। এটি লোড ব্যালেন্সিংয়ের মাধ্যমে বিভিন্ন সার্ভিসের মধ্যে অনুরোধ ভাগ করে দেয়।

  1. RestTemplate ব্যবহার করে সার্ভিস কল:

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.web.client.RestTemplate;
    
    @RestController
    public class MyServiceController {
    
        @Autowired
        private RestTemplate restTemplate;
    
        @GetMapping("/callService")
        public String callOtherService() {
            return restTemplate.getForObject("http://my-service/other-endpoint", String.class);
        }
    }
    
  2. RestTemplate Bean তৈরি করুন:

    Eureka Client-এ লোড ব্যালেন্সিং সক্রিয় করতে, @LoadBalanced অ্যানোটেশন ব্যবহার করুন:

    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.web.client.RestTemplate;
    import org.springframework.cloud.client.loadbalancer.LoadBalanced;
    
    @Configuration
    public class MyServiceConfig {
    
        @Bean
        @LoadBalanced
        public RestTemplate restTemplate() {
            return new RestTemplate();
        }
    }
    

    এখানে, @LoadBalanced দ্বারা Eureka সার্ভিসের মধ্যে লোড ব্যালেন্সিং সক্রিয় করা হয়েছে। ক্লায়েন্ট সার্ভিসটি যখন my-service নামের সার্ভিসে কল করবে, Eureka সার্ভিস রেজিস্ট্রির মাধ্যমে সঠিক ইনস্ট্যান্সে কলটি রাউট হবে।


উপসংহার

Spring Cloud Eureka Server এবং Client ইন্টিগ্রেশন একটি শক্তিশালী সমাধান তৈরি করে যা মাইক্রোসার্ভিস আর্কিটেকচারে সার্ভিস ডিসকভারি এবং রেজিস্ট্রেশনের জন্য ব্যবহার করা হয়। এটি সার্ভিসগুলির মধ্যে ডায়নামিক যোগাযোগ এবং লোড ব্যালেন্সিং সহজ করে তোলে। Eureka Server সার্ভিস রেজিস্ট্রি এবং ডিসকভারি সরবরাহ করে এবং Eureka Client সহজভাবে সার্ভিসগুলো খুঁজে পায় এবং তাদের সাথে যোগাযোগ করতে পারে।

Content added By
Promotion
NEW SATT AI এখন আপনাকে সাহায্য করতে পারে।

Are you sure to start over?

Loading...